package top.jacktgq.hsp.netty.protobuf.codec2;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

/**
 * @Author CandyWall
 * @Date 2020/11/12--13:06
 * @Description Netty服务端事件的处理器类
 * 1、自定义一个Handler，需要继承netty规定好的某个HandlerAdapter
 * 2、这时我们自定义个Handler，才能称为一个Handler
 */
public class NettyServerHandler extends SimpleChannelInboundHandler<top.jacktgq.hsp.netty.protobuf.codec2.MyDataInfo.MyMessage> {
    @Override
    //读取数据（实际这里我们可以读取客户端发送的消息）
    /**
     * @Param ctx   ：上下文对象，含有管道 pipeline，通道Channel，地址
     * @Param msg   ：客户端发送的数据
     */
    protected void channelRead0(ChannelHandlerContext ctx, top.jacktgq.hsp.netty.protobuf.codec2.MyDataInfo.MyMessage msg) throws Exception {
        //根据dataType来显示不同的信息
        top.jacktgq.hsp.netty.protobuf.codec2.MyDataInfo.MyMessage.DataType dataType = msg.getDataType();
        if (dataType == top.jacktgq.hsp.netty.protobuf.codec2.MyDataInfo.MyMessage.DataType.StudentType) {
            top.jacktgq.hsp.netty.protobuf.codec2.MyDataInfo.Student student = msg.getStudent();
            System.out.println("学生----学号：" + student.getId() + "，姓名：" + student.getName());
        } else if (dataType == top.jacktgq.hsp.netty.protobuf.codec2.MyDataInfo.MyMessage.DataType.WorkerType) {
            top.jacktgq.hsp.netty.protobuf.codec2.MyDataInfo.Worker worker = msg.getWorker();
            System.out.println("工人----姓名：" + worker.getName() + "年龄：" + worker.getAge());
        } else {
            System.out.println("传输的类型不正确");
        }
    }
}
